// let a: void  // 不能用于限制变量, 只能用于限制函数的返回值.

function logMessage(msg: string):void {
  console.log(msg)
  // return 99 // Type 'number' is not assignable to type 'void'.
  // return 0  // Type 'number' is not assignable to type 'void'.
  // return null  // Type 'null' is not assignable to type 'void'.
  // return []  // Type 'never[]' is not assignable to type 'void'.
  // return undefined
}
logMessage('你好')

// 无警告
function logMessage1(msg: string):void {
  console.log(msg)
}

// 无警告
function logMessage2(msg: string):void {
  console.log(msg)
  return
}

// 无警告
function logMessage3(msg: string):void {
  console.log(msg)
  return undefined
}

function logMessageV(msg: string): void {
  console.log(msg)
}

let resultV = logMessage('你好')

// if(resultV) {  // 此行报错: 无法测试 'void' 类型的表达式的真实性
//   console.log('logMessage 有返回值')  
// }

function logMessageU(msg: string): undefined {
  console.log(msg)
}

let resultU = logMessageU('你好')

if(resultU) {  // 此行无警告
  console.log('logMessage 有返回值')  
}
